﻿using System;
namespace Calculator.Xroad.Eu.Headers {
    
    
    [System.SerializableAttribute()]
    public partial class MultiplyInputHeader : Xtee.Core.Envelope.Header.IHeader {
        
        private global::Xroad.Eu.Xsd.Identifiers.XRoadClientIdentifierType @__client;
        
        private global::Xroad.Eu.Xsd.Identifiers.XRoadServiceIdentifierType @__service;
        
        private string @__id;
        
        private string @__userId;
        
        private string @__issue;
        
        private string @__protocolVersion;
        
        public MultiplyInputHeader() {
        }
        
        /// <summary>
        /// All parameters
        /// </summary>
        public MultiplyInputHeader(global::Xroad.Eu.Xsd.Identifiers.XRoadClientIdentifierType @client, global::Xroad.Eu.Xsd.Identifiers.XRoadServiceIdentifierType @service, string @id, string @userId, string @issue, string @protocolVersion) {
            this.@__client = @client;
            this.@__service = @service;
            this.@__id = @id;
            this.@__userId = @userId;
            this.@__issue = @issue;
            this.@__protocolVersion = @protocolVersion;
        }
        
        /// <summary>
        /// Copy Constructor
        /// </summary>
        protected MultiplyInputHeader(MultiplyInputHeader @multiplyInputHeader) {
            this.@__client = @multiplyInputHeader.Client;
            this.@__service = @multiplyInputHeader.Service;
            this.@__id = @multiplyInputHeader.Id;
            this.@__userId = @multiplyInputHeader.UserId;
            this.@__issue = @multiplyInputHeader.Issue;
            this.@__protocolVersion = @multiplyInputHeader.ProtocolVersion;
        }
        
        public virtual global::Xroad.Eu.Xsd.Identifiers.XRoadClientIdentifierType Client {
            get {
                return this.@__client;
            }
            set {
                this.@__client = value;
            }
        }
        
        public virtual global::Xroad.Eu.Xsd.Identifiers.XRoadServiceIdentifierType Service {
            get {
                return this.@__service;
            }
            set {
                this.@__service = value;
            }
        }
        
        public virtual string Id {
            get {
                return this.@__id;
            }
            set {
                this.@__id = value;
            }
        }
        
        public virtual string UserId {
            get {
                return this.@__userId;
            }
            set {
                this.@__userId = value;
            }
        }
        
        public virtual string Issue {
            get {
                return this.@__issue;
            }
            set {
                this.@__issue = value;
            }
        }
        
        public virtual string ProtocolVersion {
            get {
                return this.@__protocolVersion;
            }
            set {
                this.@__protocolVersion = value;
            }
        }
        
        public virtual string GetServiceName() {
            return Xtee.Core.Adapter.Service.ServiceNameProvider.GetName(Service);
        }
        
        public virtual string GetUserId() {
            return !string.IsNullOrEmpty(UserId)?UserId:"unavailable";
        }
    }
}
